home *** CD-ROM | disk | FTP | other *** search
GNU Info File | 1995-06-08 | 42.2 KB | 912 lines |
- This is Info file scm.info, produced by Makeinfo-1.55 from the input
- file scm.texi.
-
- File: scm.info, Node: Evaluation, Prev: Continuations, Up: Operations
-
- Evaluation
- ----------
-
- - Variable: symhash
- Top level symbol values are stored in the `symhash' table.
- `symhash' is an array of lists of ISYMs and pairs of symbols and
- values.
-
- - Immediate: ILOC
- Whenever a symbol's value is found in the local environment the
- pointer to the symbol in the code is replaced with an immediate
- object (ILOC) which specifies how many environment frames down and
- how far in to go for the value. When this immediate object is
- subsequently encountered, the value can be retrieved quickly.
-
- - Immediate: GLOC
- Pointers to symbols not defined in local environments are changed
- to one plus the value cell address in symhash. This incremented
- pointer is called a GLOC. The low order bit is normally reserved
- for GCmark; But, since references to variables in the code always
- occur in the `CAR' position and the GCmark is in the `CDR', there
- is no conflict.
-
- If the compile FLAG `CAUTIOUS' is #defined then the number of arguments
- is always checked for application of closures. If the compile FLAG
- `RECKLESS' is #defined then they are not checked. Otherwise, number of
- argument checks for closures are made only when the function position
- (whose value is the closure) of a combination is not an ILOC or GLOC.
- When the function position of a combination is a symbol it will be
- checked only the first time it is evaluated because it will then be
- replaced with an ILOC or GLOC.
-
- - Macro: EVAL EXPRESSION ENV
- - Macro: SIDEVAL EXPRESSION ENV
- `EVAL' Returns the result of evaluating EXPRESSION in ENV.
- `SIDEVAL' evaluates EXPRESSION in ENV when the value of the
- expression is not used.
-
- Both of these macros alter the list structure of EXPRESSION as it
- is memoized and hence should be used only when it is known that
- EXPRESSION will not be referenced again. The C function `eval' is
- safe from this problem.
-
- - Function: SCM eval (SCM EXPRESSION)
- Returns the result of evaluating EXPRESSION in the top-level
- environment. `eval' copies `expression' so that memoization does
- not modify `expression'.
-
- File: scm.info, Node: Improvements To Make, Next: Finishing Dynamic Linking, Prev: Operations, Up: Internals
-
- Improvements To Make
- ====================
-
- * Prefix and make more uniform all C function, variable, and constant
- names. Provide a file full of #define's to provide backward
- compatability.
-
- * `lgcd()' *needs* to generate at most one bignum, but currently
- generates more.
-
- * `divide()' could use shifts instead of multiply and divide when
- scaling.
-
- * If an open fails because there are no unused file handles, GC
- should be done so that file handles which are no longer used can be
- collected.
-
- * If the symhash array is specially marked in garbage collection,
- msymbols with value `UNDEFINED' which have no pointers to them can
- be collected. In Maclisp this was called `gctwa'.
-
- * Compaction could be done to `malloc'ed objects by freeing and
- reallocing all the malloc objects encountered in a scan of the
- heap. Whether compactions would actually occur is system
- depenedent.
-
- * Copying all of the stack is wasteful of storage. Any time a
- call-with-current-continuation is called the stack could be
- re-rooted with a frame which calls the contin just created. This
- in combination with checking stack depth could also be used to
- allow stacks deeper than 64K on the IBM PC.
-
- * lookupcar in `eval.c' should *not* memoize (to `ILOC's) when it
- retrieves environments deeper or longer than 4095. The values can
- still be retrieved (albeit slowly), but an `ILOC' should not be
- made. The `MEMOIZE_LOCALS' flag could then be flushed.
-
- * The `must-' or `make-' routines need some sort of C macros or
- conditionalization so that they check:
-
- * that the `LENGTH' field fits into a `size_t' (as is checked
- now) for platforms with `(sizeof(size_t) < sizeof(SCM))'.
-
- * that the `LENGTH' field fits into 24 (or 56) bits on machines
- where `size_t' is 32 bits or more.
-
- This is trickier than it first looks because the must_malloc()
- routine is also used for allocating heap segments, which do not
- have the `LENGTH' field restriction. Putting the 24 bit test into
- `must_malloc()' should be tested for speed impact.
-
- File: scm.info, Node: Finishing Dynamic Linking, Prev: Improvements To Make, Up: Internals
-
- Finishing Dynamic Linking
- =========================
-
- Scott Schwartz <schwartz@galapagos.cse.psu.edu> suggests: One way to
- tidy up the dynamic loading stuff would be to grab the code from perl5.
-
- VMS
- ...
-
- George Carrette (gjc@mitech.com) outlines how to dynamically link on
- VMS. There is already some code in `dynl.c' to do this, but someone
- with a VMS system needs to finish and debug it.
-
- 1. Say you have this `main.c' program:
-
- main()
- {init_lisp();
- lisp_repl();}
-
- 2. and you have your lisp in files `repl.c', `gc.c', `eval.c' and
- there are some toplevel non-static variables in use called
- `the_heap', `the_environment', and some read-only toplevel
- structures, such as `the_subr_table'.
-
- $ LINK/SHARE=LISPRTL.EXE/DEBUG REPL.OBJ,GC.OBJ,EVAL.OBJ,LISPRTL.OPT/OPT
-
- 3. where `LISPRTL.OPT' must contain at least this:
-
- SYS$LIBRARY:VAXCRTL/SHARE
- UNIVERSAL=init_lisp
- UNIVERSAL=lisp_repl
- PSECT_ATTR=the_subr_table,SHR,NOWRT,LCL
- PSECT_ATTR=the_heap,NOSHR,LCL
- PSECT_ATTR=the_environment,NOSHR,LCL
-
- *Notice:* The "psect" (Program Section) attributes.
- `LCL'
- means to keep the name local to the shared library. You
- almost always want to do that for a good clean library.
-
- `SHR,NOWRT'
- means shared-read-only. Which is the default for code, and
- is also good for efficiency of some data structures.
-
- `NOSHR,LCL'
- is what you want for everything else.
-
- Note: If you do not have a handy list of all these toplevel
- variables, do not dispair. Just do your link with the
- /MAP=LISPRTL.MAP/FULL and then search the map file,
-
- $SEARCH/OUT=LISPRTL.LOSERS LISPRTL.MAP ", SHR,NOEXE, RD, WRT"
-
- And use an emacs keyboard macro to muck the result into the proper
- form. Of course only the programmer can tell if things can be
- made read-only. I have a DCL command procedure to do this if you
- want it.
-
- 4. Now MAIN.EXE would be linked thusly:
-
- $ DEFINE LISPRTL USER$DISK:[JAFFER]LISPRTL.EXE
-
- $LINK MAIN.OBJ,SYS$INPUT:/OPT
- SYS$LIBRARY:VAXCRTL/SHARE
- LISPRTL/SHARE
-
- Note the definition of the `LISPRTL' logical name. Without such a
- definition you will need to copy `LISPRTL.EXE' over to
- `SYS$SHARE:' (aka `SYS$LIBRARY:') in order to invoke the main
- program once it is linked.
-
- 5. Now say you have a file of optional subrs, `MYSUBRS.C'. And there
- is a routine `INIT_MYSUBRS' that must be called before using it.
-
- $ CC MYSUBRS.C
- $ LINK/SHARE=MYSUBRS.EXE MYSUBRS.OBJ,SYS$INPUT:/OPT
- SYS$LIBRARY:VAXCRTL/SHARE
- LISPRTL/SHARE
- UNIVERSAL=INIT_MYSUBRS
-
- Ok. Another hint is that you can avoid having to add the `PSECT'
- declaration of `NOSHR,LCL' by declaring variables `status' in the
- C language source. That works great for most things.
-
- 6. Then the dynamic loader would have to do this:
-
- {void (*init_fcn)();
- long retval;
- retval = lib$find_image_symbol("MYSUBRS","INIT_MYSUBRS",&init_fcn,
- "SYS$DISK:[].EXE");
- if (retval != SS$_NORMAL) error(...);
- (*init_fcn)();}
-
- But of course all string arguments must be `(struct dsc$descriptor
- *)' and the last argument is optional if `MYSUBRS' is defined as a
- logical name or if `MYSUBRS.EXE' has been copied over to
- `SYS$SHARE'. The other consideration is that you will want to turn
- off C-c or other interrupt handling while you are inside most
- `lib$' calls.
-
- As far as the generation of all the `UNIVERSAL=...' declarations.
- Well, you could do well to have that automatically generated from
- the public `LISPRTL.H' file, of course.
-
- VMS has a good manual called the `Guide to Writing Modular
- Procedures' or something like that, which covers this whole area
- rather well, and also talks about advanced techniques, such as a
- way to declare a program section with a pointer to a procedure
- that will be automatically invoked whenever any shared image is
- dynamically activated. Also, how to set up a handler for normal
- or abnormal program exit so that you can clean up side effects
- (such as opening a database). But for use with `LISPRTL' you
- probably don't need that hair.
-
- One fancier option that is useful under VMS for `LISPLIB.EXE' is to
- define all your exported procedures through an "call vector"
- instead of having them just be pointers into random places in the
- image, which is what you get by using `UNIVERSAL'.
-
- If you set up the call vector thing correctly it will allow you to
- modify and relink `LISPLIB.EXE' without having to relink programs
- that have been linked against it.
-
- Windows NT
- ..........
-
- George Carrette (gjc@mitech.com) outlines how to dynamically link on
- Windows NT:
-
- * The Software Developers Kit has a sample called SIMPLDLL. Here is
- the gist of it, following along the lines of the VMS description
- above (contents of a makefile for the SDK NMAKE)
-
- LISPLIB.exp:
- LISPLIB.lib: LISPLIB.def
- $(implib) -machine:$(CPU) -def:LISPLIB.def -out:LISPLIB.lib
-
- LISPLIB.DLL : $(LISPLIB_OBJS) LISPLIB.EXP
- $(link) $(linkdebug) \
- -dll \
- -out:LISPLIB.DLL \
- LISPLIB.EXP $(LISPLIB_OBJS) $(conlibsdll)
-
- * The `LISPDEF.DEF' file has this:
-
- LIBRARY lisplib
- EXPORT
- init_lisp
- init_repl
-
- * And `MAIN.EXE' using:
-
- CLINK = $(link) $(ldebug) $(conflags) -out:$*.exe $** $(conlibsdll)
-
- MAIN.EXE : MAIN.OBJ LISPLIB.LIB
- $(CLINK)
-
- * And `MYSUBRS.DLL' is produced using:
-
- mysubrs.exp:
- mysubrs.lib: mysubrs.def
- $(implib) -machine:$(CPU) -def:MYSUBRS.def -out:MYSUBRS.lib
-
- mysubrs.dll : mysubrs.obj mysubrs.exp mysubrs.lib
- $(link) $(linkdebug) \
- -dll \
- -out:mysubrs.dll \
- MYSUBRS.OBJ MYSUBRS.EXP LISPLIB.LIB $(conlibsdll)
-
- * Where `MYSUBRS.DEF' has
-
- LIBRARY mysubrs
- EXPORT
- INIT_MYSUBRS
-
- * And the dynamic loader looks something like this, calling the two
- procedures `LoadLibrary' and `GetProcAddress'.
-
- LISP share_image_load(LISP fname)
- {long iflag;
- LISP retval,(*fcn)(void);
- HANDLE hLib;
- DWORD err;
- char *libname,fcnname[64];
- iflag = nointerrupt(1);
- libname = c_string(fname);
- _snprintf(fcnname,sizeof(fcnname),"INIT_%s",libname);
- if (!(hLib = LoadLibrary(libname)))
- {err = GetLastError();
- retval = list2(fname,LSPNUM(err));
- serror1("library failed to load",retval);}
- if (!(fcn = (LISP (*)(void)) GetProcAddress(hLib,fcnname)))
- {err = GetLastError();
- retval = list2(fname,LSPNUM(err));
- serror1("could not find library init procedure",retval);}
- retval = (*fcn)();
- nointerrupt(iflag);
- return(retval);}
-
- * *Note:* in VMS the linker and dynamic loader is case sensitive, but
- all the language compilers, including C, will by default upper-case
- external symbols for use by the linker, although the debugger gets
- its own symbols and case sensitivity is language mode dependant.
- In Windows NT things are case sensitive generally except for file
- and device names, which are case canonicalizing like in the
- Symbolics filesystem.
-
- * *Also:* All this WINDOWS NT stuff will work in MS-DOS MS-Windows
- 3.1 too, by a method of compiling and linking under Windows NT,
- and then copying various files over to MS-DOS/WINDOWS.
-
- File: scm.info, Node: Procedure and Macro Index, Next: Variable Index, Prev: Internals, Up: Top
-
- Procedure and Macro Index
- *************************
-
- This is an alphabetical list of all the procedures and macros in SCM.
-
- * Menu:
-
- * #!: Syntax Extensions.
- * #': Syntax Extensions.
- * #+: Syntax Extensions.
- * #-: Syntax Extensions.
- * #.: Syntax Extensions.
- * #|: Syntax Extensions.
- * $abs: Numeric.
- * $acos: Numeric.
- * $acosh: Numeric.
- * $asin: Numeric.
- * $asinh: Numeric.
- * $atan: Numeric.
- * $atan2: Numeric.
- * $atanh: Numeric.
- * $cos: Numeric.
- * $cosh: Numeric.
- * $exp: Numeric.
- * $expt: Numeric.
- * $log: Numeric.
- * $sin: Numeric.
- * $sinh: Numeric.
- * $sqrt: Numeric.
- * $tan: Numeric.
- * $tanh: Numeric.
- * -: SCM Options.
- * -: SCM Options.
- * -a: SCM Options.
- * -b: SCM Options.
- * -c: SCM Options.
- * -e: SCM Options.
- * -f: SCM Options.
- * -i: SCM Options.
- * -l: SCM Options.
- * -m: SCM Options.
- * -no-init-file: SCM Options.
- * -p: SCM Options.
- * -q: SCM Options.
- * -r: SCM Options.
- * -s: SCM Options.
- * -u: SCM Options.
- * -v: SCM Options.
- * @apply: Low Level Syntactic Hooks.
- * @call-with-current-continuation: Low Level Syntactic Hooks.
- * abort: Internal State.
- * access: I/O-Extensions.
- * acct: Posix Extensions.
- * acons: Miscellaneous Procedures.
- * acosh: Numeric.
- * alarm: Interrupts.
- * alarm-interrupt: Interrupts.
- * ALLOW_INTS: Signals.
- * alrm_signal: Signals.
- * arithmetic-error: Interrupts.
- * array->list: Conventional Arrays.
- * array-contents: Conventional Arrays.
- * array-contents: Conventional Arrays.
- * array-copy!: Conventional Arrays.
- * array-dimensions: Conventional Arrays.
- * array-equal?: Conventional Arrays.
- * array-fill!: Conventional Arrays.
- * array-for-each: Array Mapping.
- * array-in-bounds?: Conventional Arrays.
- * array-index-map!: Array Mapping.
- * array-map!: Array Mapping.
- * array-prototype: Uniform Array.
- * array-rank: Conventional Arrays.
- * array-ref: Conventional Arrays.
- * array-set!: Conventional Arrays.
- * array-shape: Conventional Arrays.
- * array?: Uniform Array.
- * array?: Conventional Arrays.
- * asinh: Numeric.
- * ASRTGO: C Macros.
- * ASSERT: C Macros.
- * atanh: Numeric.
- * bg-pipe: Gscsh.
- * bit-count: Bit Vectors.
- * bit-count*: Bit Vectors.
- * bit-invert!: Bit Vectors.
- * bit-position: Bit Vectors.
- * bit-set*!: Bit Vectors.
- * box: Curses Miscellany.
- * builtin-variable: Variables.
- * call-with-dynamic-root: Dynamic Roots.
- * CAR: Cells.
- * catch: Exceptions.
- * cbreak: Terminal Mode Setting.
- * CDR: Cells.
- * CHARS: Cells.
- * CHARS: Cells.
- * chdir: I/O-Extensions.
- * chmod: I/O-Extensions.
- * chown: Posix Extensions.
- * clearok: Output Options Setting.
- * close-io-port: Files and Ports.
- * close-port: Window Manipulation.
- * close-port: Posix Extensions.
- * close-port: Files and Ports.
- * closedir: I/O-Extensions.
- * CLOSEDP: Cells.
- * CLOSUREP: Cells.
- * CODE: Cells.
- * compile-file: Compiling And Linking.
- * CONSP: Cells.
- * copy-tree: Miscellaneous Procedures.
- * cosh: Numeric.
- * could-not-open: Interrupts.
- * current-error-port: Files and Ports.
- * current-time: Time.
- * default-input-port: Line Editing.
- * default-output-port: Line Editing.
- * DEFER_INTS: Signals.
- * defined?: Syntax Extensions.
- * defvar: Syntax Extensions.
- * dimensions->uniform-array: Uniform Array.
- * dimensions->uniform-array: Uniform Array.
- * display: Output.
- * display: Output.
- * duplicate-port: I/O-Extensions.
- * dyn:call: Compiling And Linking.
- * dyn:link: Compiling And Linking.
- * dyn:unlink: Compiling And Linking.
- * dynamic-root: Dynamic Roots.
- * echo: Terminal Mode Setting.
- * ed: System Interface.
- * ed: System Interface.
- * enclose-array: Conventional Arrays.
- * end-of-program: Interrupts.
- * endwin: Curses.
- * ENV: Cells.
- * equal-fn?: Key-Vector 0 Elements.
- * errno: System Interface.
- * errno: System Interface.
- * error: Internal State.
- * eval: Evaluation.
- * EVAL: Evaluation.
- * eval: Miscellaneous Procedures.
- * eval-string: Miscellaneous Procedures.
- * eval2: User Defined Top Levels.
- * exec-pipe: Gscsh.
- * execl: I/O-Extensions.
- * execlp: I/O-Extensions.
- * execv: I/O-Extensions.
- * execvp: I/O-Extensions.
- * exit: System Interface.
- * exit: System Interface.
- * fg-pipe: Gscsh.
- * file-position: I/O-Extensions.
- * file-set-position: I/O-Extensions.
- * fileno: I/O-Extensions.
- * force-output: Window Manipulation.
- * fork: Gscsh.
- * fork: Gscsh.
- * fork: Posix Extensions.
- * FPORTP: Cells.
- * gc: Internal State.
- * get-internal-real-time: Time.
- * get-internal-run-time: Time.
- * getcwd: I/O-Extensions.
- * getegid: Posix Extensions.
- * geteuid: Posix Extensions.
- * getgid: Posix Extensions.
- * getgr: Posix Extensions.
- * getgr: Posix Extensions.
- * getgr: Posix Extensions.
- * getgroups: Posix Extensions.
- * gethost: Host Data.
- * gethost: Host Data.
- * getnet: Host Data.
- * getnet: Host Data.
- * getpeername: Socket.
- * getpid: I/O-Extensions.
- * getppid: Posix Extensions.
- * getproto: Host Data.
- * getproto: Host Data.
- * getpw: Posix Extensions.
- * getpw: Posix Extensions.
- * getpw: Posix Extensions.
- * getserv: Host Data.
- * getserv: Host Data.
- * getsockname: Socket.
- * getuid: Posix Extensions.
- * getyx: Input.
- * hang-up: Interrupts.
- * ICHR: Immediates.
- * ICHRP: Immediates.
- * idlok: Output Options Setting.
- * IFLAGP: Immediates.
- * IMP: Immediates.
- * inet:address->string: Internet Addresses.
- * inet:local-network-address: Internet Addresses.
- * inet:make-address: Internet Addresses.
- * inet:network: Internet Addresses.
- * inet:string->address: Internet Addresses.
- * initscr: Curses.
- * init_signals: Signals.
- * INPORTP: Cells.
- * intern-string: Obarrays.
- * intern-symbol: Obarrays.
- * int_signal: Signals.
- * INUM: Immediates.
- * INUMP: Immediates.
- * isa-fn?: Key-Vector 0 Elements.
- * isatty?: I/O-Extensions.
- * ISYMCHARS: Immediates.
- * ISYMNUM: Immediates.
- * ISYMP: Immediates.
- * keyword->symbol: Keywords.
- * keyword?: Keywords.
- * kill: Posix Extensions.
- * leaveok: Output Options Setting.
- * LENGTH: Cells.
- * LENGTH: Cells.
- * LENGTH: Cells.
- * line-editing: Line Editing.
- * line-editing: Line Editing.
- * line-number: Miscellaneous Procedures.
- * link: Posix Extensions.
- * link-named-scm: Compiling And Linking.
- * list->uniform-array: Uniform Array.
- * list->uniform-vector: Uniform Array.
- * list-file: Miscellaneous Procedures.
- * load: Compiling And Linking.
- * load-string: Miscellaneous Procedures.
- * lock-vector!: Lvector Procedures.
- * lstat: Posix Extensions.
- * lvector-accessor: Lvector Procedures.
- * lvector-isa?: Lvector Procedures.
- * lvector-keys: Lvector Procedures.
- * lvector-modifier: Lvector Procedures.
- * lvector-ref: Lvector Procedures.
- * lvector-set!: Lvector Procedures.
- * lvector?: Lvector Procedures.
- * makcclo: Cells.
- * make-arbiter: Process Synchronization.
- * make-array: Conventional Arrays.
- * make-edited-line-port: Line Editing.
- * make-keyword: Keywords.
- * make-shared-array: Conventional Arrays.
- * make-soft-port: Soft Ports.
- * make-stream-socket: Socket.
- * make-stream-socket: Socket.
- * make-stream-socketpair: Socket.
- * make-stream-socketpair: Socket.
- * make-undefined: Variables.
- * make-undefined: Variables.
- * make-uniform-array: Uniform Array.
- * make-uniform-vector: Uniform Array.
- * make-uniform-vector: Uniform Array.
- * make-variable: Variables.
- * make-variable: Variables.
- * make_gsubr: Defining Subrs.
- * MAKICHR: Immediates.
- * MAKIFLAG: Immediates.
- * MAKINUM: Immediates.
- * MAKISYM: Immediates.
- * MAKSPCSYM: Immediates.
- * mkdir: I/O-Extensions.
- * mknod: Posix Extensions.
- * mvwin: Window Manipulation.
- * NCONSP: Cells.
- * NEWCELL: Cells.
- * newwin: Window Manipulation.
- * nice: Posix Extensions.
- * NIMP: Immediates.
- * NINUMP: Immediates.
- * nl: Terminal Mode Setting.
- * nocbreak: Terminal Mode Setting.
- * nodelay: Output Options Setting.
- * noecho: Terminal Mode Setting.
- * nonl: Terminal Mode Setting.
- * noraw: Terminal Mode Setting.
- * NSTRINGP: Cells.
- * NVECTORP: Cells.
- * open-file: Files and Ports.
- * open-input-pipe: Posix Extensions.
- * open-io-file: Files and Ports.
- * open-output-pipe: Posix Extensions.
- * open-pipe: Posix Extensions.
- * opendir: I/O-Extensions.
- * OPENP: Cells.
- * OPFPORTP: Cells.
- * OPINFPORTP: Cells.
- * OPINPORTP: Cells.
- * OPOUTFPORTP: Cells.
- * OPOUTPORTP: Cells.
- * OPPORTP: Cells.
- * out-of-storage: Interrupts.
- * OUTPORTP: Cells.
- * overlay: Window Manipulation.
- * overwrite: Window Manipulation.
- * perror: System Interface.
- * pipe: Posix Extensions.
- * PORTP: Cells.
- * print-fn: Key-Vector 0 Elements.
- * proc: Gwish.
- * procedure->macro: Low Level Syntactic Hooks.
- * procedure->memoizing-macro: Low Level Syntactic Hooks.
- * procedure->syntax: Low Level Syntactic Hooks.
- * procedure-assoc: Procedure Properties.
- * procedure-properties: Procedure Properties.
- * procedure-property: Procedure Properties.
- * procedure-putprop!: Procedure Properties.
- * program-arguments: System Interface.
- * putenv: I/O-Extensions.
- * quit: System Interface.
- * quit: System Interface.
- * raw: Terminal Mode Setting.
- * read-char: Input.
- * read:sharp: Low Level Syntactic Hooks.
- * readdir: I/O-Extensions.
- * readlink: Posix Extensions.
- * redirect-port!: I/O-Extensions.
- * ref-fn: Key-Vector 0 Elements.
- * refresh: Window Manipulation.
- * regcomp: Regular Expression Pattern Matching.
- * regerror: Regular Expression Pattern Matching.
- * regexec: Regular Expression Pattern Matching.
- * regmatch: Regular Expression Pattern Matching.
- * regmatch?: Regular Expression Pattern Matching.
- * regmatchv: Regular Expression Pattern Matching.
- * regsearch: Regular Expression Pattern Matching.
- * regsearchv: Regular Expression Pattern Matching.
- * release-arbiter: Process Synchronization.
- * rename-file: I/O-Extensions.
- * reopen-file: I/O-Extensions.
- * require: Compiling And Linking.
- * require: Compiling And Linking.
- * resetty: Terminal Mode Setting.
- * rewinddir: I/O-Extensions.
- * rmdir: I/O-Extensions.
- * room: Internal State.
- * room: Internal State.
- * savetty: Terminal Mode Setting.
- * scm_evstr: Calling Scheme From C.
- * scm_ldfile: Calling Scheme From C.
- * scm_ldprog: Calling Scheme From C.
- * scm_ldstr: Calling Scheme From C.
- * scroll: Output.
- * scrollok: Output Options Setting.
- * serial-array-copy!: Conventional Arrays.
- * serial-array-map!: Array Mapping.
- * set-fn: Key-Vector 0 Elements.
- * set-procedure-properties!: Procedure Properties.
- * setegid: Posix Extensions.
- * seteuid: Posix Extensions.
- * setgid: Posix Extensions.
- * setgrent: Posix Extensions.
- * setgrent: Posix Extensions.
- * setgrent: Posix Extensions.
- * sethostent: Host Data.
- * sethostent: Host Data.
- * setnetent: Host Data.
- * setnetent: Host Data.
- * setprotoent: Host Data.
- * setprotoent: Host Data.
- * setpwent: Posix Extensions.
- * setpwent: Posix Extensions.
- * setpwent: Posix Extensions.
- * setservent: Host Data.
- * setservent: Host Data.
- * setuid: Posix Extensions.
- * SIDEVAL: Evaluation.
- * sinh: Numeric.
- * socket-name:address: Socket.
- * socket-name:family: Socket.
- * socket-name:port-number: Socket.
- * socket:accept: Socket.
- * socket:bind: Socket.
- * socket:bind: Socket.
- * socket:connect: Socket.
- * socket:connect: Socket.
- * socket:listen: Socket.
- * socket:shutdown: Socket.
- * stat: I/O-Extensions.
- * STREAM: Cells.
- * string-edit: Regular Expression Pattern Matching.
- * string-split: Regular Expression Pattern Matching.
- * string-splitv: Regular Expression Pattern Matching.
- * STRINGP: Cells.
- * subwin: Window Manipulation.
- * symbol-binding: Obarrays.
- * symbol-bound?: Obarrays.
- * symbol-interned?: Obarrays.
- * symbol-set!: Obarrays.
- * SYMBOLP: Cells.
- * symlink: Posix Extensions.
- * sync: Posix Extensions.
- * tanh: Numeric.
- * tcl-apply-command: Tcl Facilities.
- * tcl-command: Tcl Facilities.
- * tcl-create-command: Tcl Facilities.
- * tcl-create-interp: Tcl Facilities.
- * tcl-delete-command: Tcl Facilities.
- * tcl-get-boolean: Tcl Facilities.
- * tcl-get-double: Tcl Facilities.
- * tcl-get-int: Tcl Facilities.
- * tcl-get-var2: Tcl Facilities.
- * tcl-global-eval: Tcl Facilities.
- * tcl-lambda: Gwish.
- * tcl-merge: Tcl Facilities.
- * tcl-set-var2: Tcl Facilities.
- * tcl-split-list: Tcl Facilities.
- * tcl-trace-var2: Tcl Facilities.
- * tcl-untrace-var2: Tcl Facilities.
- * terms: Miscellaneous Procedures.
- * throw: Exceptions.
- * throw: Exceptions.
- * ticks: Interrupts.
- * ticks-interrupt: Interrupts.
- * tk-do-one-event: Tk Facilities.
- * tk-init-main-window: Tk Facilities.
- * tk-main-loop: Tk Facilities.
- * touchline: Window Manipulation.
- * touchwin: Window Manipulation.
- * transpose-array: Conventional Arrays.
- * try-arbiter: Process Synchronization.
- * try-load: Miscellaneous Procedures.
- * ttyname: Posix Extensions.
- * TYP16: Cells.
- * TYP3: Cells.
- * TYP7: Cells.
- * UCHARS: Cells.
- * UCHARS: Cells.
- * umask: I/O-Extensions.
- * uname: Posix Extensions.
- * unctrl: Curses Miscellany.
- * uniform-array-read!: Uniform Array.
- * uniform-array-read!: Uniform Array.
- * uniform-array-write: Uniform Array.
- * uniform-array-write: Uniform Array.
- * uniform-vector-fill!: Uniform Array.
- * uniform-vector-length: Uniform Array.
- * uniform-vector-read!: Uniform Array.
- * uniform-vector-read!: Uniform Array.
- * uniform-vector-write: Uniform Array.
- * uniform-vector-write: Uniform Array.
- * unlock-vector!: Lvector Procedures.
- * user-interrupt: Interrupts.
- * usr:lib: Compiling And Linking.
- * utime: I/O-Extensions.
- * variable-bound?: Variables.
- * variable-ref: Variables.
- * variable-set!: Variables.
- * variable?: Variables.
- * vector-set-length!: Miscellaneous Procedures.
- * VECTORP: Cells.
- * VELTS: Cells.
- * verbose: Internal State.
- * vms-debug: System Interface.
- * wadd: Output.
- * wadd: Output.
- * wait: Gscsh.
- * wait: Gscsh.
- * wait: Gscsh.
- * waitpid: Posix Extensions.
- * wclear: Output.
- * wclrtobot: Output.
- * wclrtoeol: Output.
- * wdelch: Output.
- * wdeleteln: Output.
- * werase: Output.
- * winch: Input.
- * winsch: Output.
- * winsertln: Output.
- * with-error-to-file: Files and Ports.
- * with-error-to-port: Files and Ports.
- * with-input-from-port: Files and Ports.
- * with-output-to-port: Files and Ports.
- * wmove: Window Manipulation.
- * wstandend: Curses Miscellany.
- * wstandout: Curses Miscellany.
- * _ionbf: Files and Ports.
-
- File: scm.info, Node: Variable Index, Next: Type Index, Prev: Procedure and Macro Index, Up: Top
-
- Variable Index
- **************
-
- This is an alphabetical list of all the global variables in SCM.
-
- * Menu:
-
- * *argv*: SCM Variables.
- * *interactive*: SCM Variables.
- * *load-pathname*: Miscellaneous Procedures.
- * *R4RS-macro*: SCM Variables.
- * *scm-version*: Internal State.
- * af_inet: Host Data.
- * af_unix: Host Data.
- * BOOL_F: Immediates.
- * BOOL_T: Immediates.
- * EOF_VAL: Immediates.
- * EOL: Immediates.
- * errobj: Internal State.
- * HOME: SCM Variables.
- * internal-time-units-per-second: Time.
- * INUM0: Immediates.
- * isymnames: Immediates.
- * lvector-hook-slots: Key-Vector 0 Elements.
- * most-negative-fixnum: Numeric.
- * most-positive-fixnum: Numeric.
- * NUM_ISPCSYM: Immediates.
- * NUM_ISYMS: Immediates.
- * open_both: Files and Ports.
- * open_read: Files and Ports.
- * open_write: Files and Ports.
- * SCHEME_LIBRARY_PATH: SCM Variables.
- * SCM_INIT_PATH: SCM Variables.
- * symhash: Evaluation.
- * UNDEFINED: Immediates.
- * UNSPECIFIED: Immediates.
-
- File: scm.info, Node: Type Index, Prev: Variable Index, Up: Top
-
- Type Index
- **********
-
- This is an alphabetical list of all the data types in SCM.
-
- * Menu:
-
- * CELLPTR: Immediates.
- * GLOC: Evaluation.
- * gloc: Immediates.
- * ichr: Immediates.
- * iflags: Immediates.
- * ILOC: Evaluation.
- * iloc: Immediates.
- * inum: Immediates.
- * ispcsym: Immediates.
- * isym: Immediates.
- * spare: Cells.
- * tc16_arbiter: Cells.
- * tc16_array: Cells.
- * tc16_bigneg: Cells.
- * tc16_bigpos: Cells.
- * tc16_flo: Cells.
- * tc16_inpipe: Cells.
- * tc16_inport: Cells.
- * tc16_ioport: Cells.
- * tc16_macro: Cells.
- * tc16_outpipe: Cells.
- * tc16_outport: Cells.
- * tc16_promise: Cells.
- * tc16_sfport: Cells.
- * tc16_strport: Cells.
- * tc3_closure: Cells.
- * tc3_cons: Cells.
- * tc7_asubr: Cells.
- * tc7_bvect: Cells.
- * tc7_cclo: Cells.
- * tc7_contin: Cells.
- * tc7_cvect: Cells.
- * tc7_cxr: Cells.
- * tc7_dvect: Cells.
- * tc7_fvect: Cells.
- * tc7_ivect: Cells.
- * tc7_lsubr: Cells.
- * tc7_lsubr_2: Cells.
- * tc7_msymbol: Cells.
- * tc7_rpsubr: Cells.
- * tc7_ssymbol: Cells.
- * tc7_string: Cells.
- * tc7_subr_0: Cells.
- * tc7_subr_1: Cells.
- * tc7_subr_1o: Cells.
- * tc7_subr_2: Cells.
- * tc7_subr_2o: Cells.
- * tc7_subr_3: Cells.
- * tc7_uvect: Cells.
- * tc7_vector: Cells.
- * tc_dblc: Cells.
- * tc_dblr: Cells.
- * tc_free_cell: Cells.
-
-
-